﻿using Microsoft.AspNetCore.Http;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Text;

namespace ST.Common.Util.Model
{
	/// <summary>
	/// 用户会话基本信息（发送到客户端，只保留基本信息）
	/// </summary>
	public partial class UserSessionBase
	{
		/// <summary>
		/// 会话ID
		/// </summary>
		public int SessionID { get; set; }

		/// <summary>
		/// 会话类型（对应OAuthTypeEnum枚举）
		/// </summary>
		public int SessionType { get; set; }

		/// <summary>
		/// 用户ID
		/// </summary>
		public int UserID { get; set; }

		/// <summary>
		/// 用户姓名
		/// </summary>
		public string UserName { get; set; }

		/// <summary>
		/// OAuth授权的OpenID
		/// </summary>
		public string OpenID { get; set; }

		/// <summary>
		/// 关联的公众号OpenID
		/// </summary>
		public string RelatedOpenID { get; set; }

		/// <summary>
		/// 是否订阅/关注公众号
		/// </summary>
		[JsonIgnore]
		public bool Subscribe { get; set; }

		/// <summary>
		/// OAuth授权获取的Key（todo:后期如果觉得客户端生成的加密后的key太大或key不安全可以考虑不发送到客户端）
		/// </summary>
		public string Sessionkey { get; set; }

		/// <summary>
		/// 用户角色列表
		/// </summary>
		public int[] Roles { get; set; }

		/// <summary>
		/// 单位ID
		/// </summary>
		public int OrgID { get; set; }

		/// <summary>
		/// 单位类型
		/// </summary>
		public int OrgType { get; set; }

		/// <summary>
		/// 单位关联的IMS_Partner ID
		/// </summary>
		public int OrgPartnerID { get; set; }

		/// <summary>
		/// 部门ID
		/// </summary>
		public int DeptID { get; set; }

		/// <summary>
		/// 当前访问的IP地址（不发送到客户端的加密字符串中）
		/// </summary>
		[JsonIgnore]
		public string VisitIP { get; set; }

		#region 其他需要发送到客户端的加密字符串（根据具体业务扩展）
		/// <summary>
		/// 用户关联的会员（小程序）
		/// </summary>
		public int PartnerID { get; set; }
		#endregion

		/// <summary>
		/// 转换成发送到客户端的字符串
		/// </summary>
		/// <returns></returns>
		public string ToJson()
		{
			return JsonConvert.SerializeObject((UserSessionBase)this, new JsonSerializerSettings()
			{
				NullValueHandling = NullValueHandling.Ignore
			});
		}
	}
}
